#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/stat.h>
#include <sys/un.h>
#include <netinet/in.h>
#include <netdb.h>
#include <unistd.h>
#include <errno.h>
/**
 * Estructura de tipo pagina
 */
typedef struct pagina PAGE;
/**
 * Estructura de la pagina
 */
struct pagina {
   char *url;
   PAGE *siguiente;
};

/**
 * Cabeza y Cola de la Lista
 */
PAGE *head = NULL;
PAGE *tail = NULL;
/**
 * Imprime el contenido de la lista
 */
void imprimir()
{
    PAGE *pagina;
    pagina = head;
    
    while(pagina)
    {
        printf("%s\n", pagina->url);
        pagina = pagina->siguiente;
    }
}

/**
 * Crea una lista de direcciones
 * @param newdireccion
 */
void insertar_url(char *url)
{
    //printf("url-> %s = %d\n", url, refPaginaValida(url));
    
    PAGE *newpage;
    if ((newpage = malloc(sizeof(PAGE))) == NULL) { 
        abort(); 
    }
    else
    {        
        newpage->url = strdup(url);
        //printf("insertando lista: %s \n", newpage->url);
        newpage->siguiente = NULL;
        if(!head){
            head = newpage;
        }
        else
        {
            PAGE *tmp;
            tmp = head;
            while(tmp->siguiente != NULL){
                tmp = tmp->siguiente;
            }
            tmp->siguiente = newpage;
            newpage->siguiente = NULL;
        }
    }
    
}


void clean()
{
    while (head) {
        tail = head->siguiente;
        free(head);
        head = tail;
    }
}

/*
int main()
{
    insertar_url("www.nacion.com/1.htm");
    insertar_url("www.nacion.com/2.htm");
    insertar_url("www.nacion.com/3.htm");
    imprimir();
    clean();
    return 0;
}
*/
